<?php

include_once ('../genericos/translate.php');
include ('classCita.php');
include ('classEmpleado.php');
include_once ('sqlinjection.php');
$accion = $_GET['vista'];
$objCalendario = new Calendario();

switch ($accion) {

    case "1": $objCalendario->ImprimeDia();
        break;
    case "2": $objCalendario->ImprimeSemana();
        break;
    case "3": $objCalendario->ImprimeMes();
        break;
};
$evento = $_GET['accion'];
switch ($evento) {
    case "buscarCandidato": $objCalendario->buscarCandidatoActualizacion();
        break;
    case "buscarRecarga": $objCalendario->buscarCandidatoRecarga();
        break;
}

class Calendario {

    var $citas = array(); //Carga todas las citas retornadas de la consulta en la clase citas.
    var $horario = array(); //Carga el horario del empleado en un arreglo.
    var $id_cita = 0; //Id de la cita que se va a imprimir en el calendario.
    var $temp_id = 0; //Id temporarl de la cita que se va a imprimir en el calendario.
    var $nombre; //El nombre del paciente de la cita que se imprime en la vista Dia y Semana.
    var $procedimiento; //El procedimiento que se le va a realizar al paciente, se muestra en la vista Dia.
    var $imprimiendoCita = false; //Se utiliza para saber si en la vista Dia ya se imprimieron los datos del paciente y procedimiento en la cita.
    var $horaLaboral = false; //Se utiliza para saber si la hora que se imprime esta dentro del horario del empleado.
    var $intervaloMinutos = "00:30"; //Intervalo de tiempo que dura cada cita.
    var $horaInicio = "06:00"; //Hora en que se empiezan a atender citas.
    var $horaFinal = "24:00";  //Hora en que se terminan de atender citas.
    var $horaFinalDia; //
    var $intervaloCSS = 1; //Se utiliza para imprimir el css de la tabla del calendario.
    var $horaTemp = "06:00"; //Se utiliza para comprobar la hora y saber si se debe cambiar de intervalo del css en vista semana.

    function traerRangoHorario($idempleado, $idcentro, $modo) {
        $objEmpleado = new Empleado();
        $objEmpleado->setID_EMPLEADO($idempleado);
        $objEmpleado->setID_CENTRO_MEDICO($idcentro);
        $objEmpleado->setMODO($modo);
        $retorno = $objEmpleado->rangoHorario();
        return $retorno;
    }

    function intervaloEmpleado() {
        $objCita = new Cita();
        $objCita->setID_EMPLEADO($_GET['id_empleado']);
        $objCita->devuelveIntervalo();
        $intervaloMinutos = $objCita->getINTERVALO();
        return $intervaloMinutos;
    }

    /**
     * Devuelve los campos candidatos donde una cita puede ser reasignada.
     */
    function buscarCandidatoActualizacion() {
        $objCita = new Cita();
        $objCita->setID_CITA($_GET['id_cita']);
        $objCita->traerTiempoCita();
        if (!isset($_GET['inicioCita'])) {
            $inicioCita = $objCita->getFC_INICIO();
            $finalCita = $objCita->getFC_FINAL();
        } else {
            $inicioCita = $_GET['inicioCita'];
            $finalCita = $_GET['finalCita'];
        }
        $tiempo = mktime(substr($finalCita, 11, 2), substr($finalCita, 14, 2), substr($finalCita, 17, 2), substr($finalCita, 5, 2), substr($finalCita, 8, 2), substr($finalCita, 0, 4)) - mktime(substr($inicioCita, 11, 2), substr($inicioCita, 14, 2), substr($inicioCita, 17, 2), substr($inicioCita, 5, 2), substr($inicioCita, 8, 2), substr($inicioCita, 0, 4));
        $tiempo = ((int) $tiempo / 60);
        $inicioHorario;
        $finalHorario;
        $objEmpleado = new Empleado();
        $objEmpleado->setID_EMPLEADO($_GET['id_empleado']);
        $objEmpleado->setID_CENTRO_MEDICO($_GET['centromedico']);
        $objEmpleado->intervaloHorarioEmpleado($_GET['fecha']);
        if ($objEmpleado->getINICIO_HORARIO() == "No") {
            $inicioHorario = "06:00";
            $finalHorario = "23:00";
        } else {
            $inicioHorario = $objEmpleado->getINICIO_HORARIO();
            $finalHorario = $objEmpleado->getFINAL_HORARIO();
        }
        $this->ImprimeCandidatos(substr($_GET['fecha'], 8, 2), substr($_GET['fecha'], 5, 2), substr($_GET['fecha'], 0, 4), $inicioHorario, $finalHorario, $tiempo);
    }

    function buscarCandidatoRecarga() {
        $objCita = new Cita();
        $objCita->setID_CITA($_GET['id_cita']);
        $objCita->traerTiempoCita();
        if (!isset($_GET['inicioCita'])) {
            $inicioCita = $objCita->getFC_INICIO();
            $finalCita = $objCita->getFC_FINAL();
        } else {
            $inicioCita = $_GET['inicioCita'];
            $finalCita = $_GET['finalCita'];
        }
        $tiempo = mktime(substr($finalCita, 11, 2), substr($finalCita, 14, 2), substr($finalCita, 17, 2), substr($finalCita, 5, 2), substr($finalCita, 8, 2), substr($finalCita, 0, 4)) - mktime(substr($inicioCita, 11, 2), substr($inicioCita, 14, 2), substr($inicioCita, 17, 2), substr($inicioCita, 5, 2), substr($inicioCita, 8, 2), substr($inicioCita, 0, 4));
        $tiempo = ((int) $tiempo / 60);
        $inicioHorario;
        $finalHorario;
        $objEmpleado = new Empleado();
        $objEmpleado->setID_EMPLEADO($_GET['id_empleado']);
        $objEmpleado->setID_CENTRO_MEDICO($_GET['centromedico']);
        $objEmpleado->intervaloHorarioEmpleado($_GET['fecha']);
        if ($objEmpleado->getINICIO_HORARIO() == "No") {
            $inicioHorario = $this->horaInicio;
            $finalHorario = $this->horaFinal;
        } else {
            $inicioHorario = $objEmpleado->getINICIO_HORARIO();
            $finalHorario = $objEmpleado->getFINAL_HORARIO();
        }
        $this->ImprimeCandidatosRecarga(substr($_GET['fecha'], 8, 2), substr($_GET['fecha'], 5, 2), substr($_GET['fecha'], 0, 4), $inicioHorario, $finalHorario, $tiempo);
    }

    function actualizarSesion() {
        $objEmpleado = new Empleado();
        $objEmpleado->setID_EMPLEADO($_GET['id_empleado']);
        $objEmpleado->setID_CENTRO_MEDICO($_GET['centromedico']);
        $objEmpleado->cambiarSesionIdPersona();
    }

    /**
     * Carga el horario del empleado para imprimir su disponibilidad en el calendario.
     */
    function cargarHorario() {
        $objEmpleado = new Empleado();
        $objEmpleado->setID_CENTRO_MEDICO($_GET['centromedico']);
        $objEmpleado->setID_EMPLEADO($_GET['id_empleado']);
        $objEmpleado->traerHorarioCentroMedicoxEmpleado();
        $this->horario = $objEmpleado->getARREGLO_HORARIO();
    }

    /**
     * Carga en el vector de Citas todas las citas de la base de datos con base a un rango de fechas y el id del empleado.
     * @param type $fechaInicio
     * @param type $fechaFinal 
     */
    function cargarCitas($fechaInicio, $fechaFinal) {
        $objCitas = new Cita();
        $objCitas->setID_EMPLEADO($_GET['id_empleado']);
        $objCitas->setFC_INICIO($fechaInicio);
        $objCitas->setFC_FINAL($fechaFinal);
        $objCitas->setID_CEMTROMEDICO($_GET['centromedico']);
        $objCitas->TraerCitasMedico();
        $this->citas = $objCitas->getARREGLO_CITAS();
    }

    /**
     *
     * @param type $fechaCitas Carga las citas que tenga un empleado de tipo medico en un mes dado.
     */
    function cargarCitasMes($fechaCitas) {
        $objCitas = new Cita();
        $objCitas->setID_EMPLEADO($_GET['id_empleado']);
        $objCitas->setFC_INICIO($fechaCitas);
        $objCitas->setID_CEMTROMEDICO($_GET['centromedico']);
        $objCitas->traerCitasMedicoMes();
        $this->citas = $objCitas->getARREGLO_CITAS();
    }

    /**
     * Comprueba el horario de un empleado segun un dia dado.
     * @param type $dia
     * @param type $hora 
     */
    function comprobarHorarioDia($dia, $hora) {
        $dia = (int) $dia - 1;
        $hora = strtotime($hora);
        if ($_GET['id_empleado'] == _("seleccionar")) {
            $this->horaLaboral = true;
        } else {
            foreach ($this->horario as $diaSemana) {
                $i = (int) 0;
                foreach ($diaSemana as $numero => $n) {
                    if ($i == $dia) {
                        $horas = split("-", $n);
                        $inicio = strtotime(str_replace(" ", "", $horas[0]));
                        $final = strtotime(str_replace(" ", "", $horas[1]));
                        $this->horaFinalDia = str_replace(" ", "", $horas[1]);
                        if ($hora >= $inicio && $hora < $final) {
                            $this->horaLaboral = true;
                        }
                    }
                    $i++;
                }
            }
        }
    }

    /**
     * Comprueba el horario semanal de un Empleado segun una fecha dada.
     * @param type $dia
     * @param type $hora 
     */
    function comprobarHorarioSemana($dia, $hora) {
        $dia = (int) $dia - 1;
        $hora = strtotime($hora);
        if ($_GET['id_empleado'] == _("seleccionar")) {
            $this->horaLaboral = true;
        } else {
            foreach ($this->horario as $diaSemana) {
                $i = (int) 0;
                foreach ($diaSemana as $numero => $n) {
                    if ($i == $dia) {
                        $horas = split("-", $n);
                        $inicio = strtotime(str_replace(" ", "", $horas[0]));
                        $final = strtotime(str_replace(" ", "", $horas[1]));
                        if ($hora >= $inicio && $hora < $final) {
                            $this->horaLaboral = true;
                        }
                    }
                    $i++;
                }
            }
        }
    }

    function comprobarHorarioMes($dia) {
        $dia = (int) $dia - 1;
        $minutosTrabajar;
        if ($_GET['id_empleado'] == _("seleccionar")) {
            $this->horaLaboral = true;
        } else {
            foreach ($this->horario as $diaSemana) {
                $i = (int) 0;
                foreach ($diaSemana as $numero => $n) {
                    if ($i == $dia) {
                        if ($n != "No") {
                            $horas = split("-", $n);
                            $inicio = str_replace(" ", "", $horas[0] . ':00');
                            $final = str_replace(" ", "", $horas[1] . ':00');
                            $minutosTrabajar = $this->diferenciarTiempo($final, $inicio);
                            $minutosTemp = split(":", $minutosTrabajar);
                            $minutosTrabajar = ((int) $minutosTemp[0] * 60) + (int) $minutosTemp[1];
                        } else {
                            $minutosTrabajar = 0;
                        }
                    }
                    $i++;
                }
            }
        }
        return $minutosTrabajar;
    }

    /**
     * Devuelve la diferencia de tiempo entre una hora y otra, se utiliza para los horarios de los empleados.
     * @param type $hora1
     * @param type $hora2
     * @return DiferenciaTiempo
     */
    function diferenciarTiempo($hora1, $hora2) {
        $h = ((strtotime($hora1) - strtotime($hora2))) / 3600;
        $m = intval((($h) - intval($h)) * 60);
        $s = intval((((($h) - intval($h)) * 60) - $m) * 60);
        return (intval($h) < 10 ? '0' . intval($h) : intval($h)) . ':' . ($m < 10 ? '0' . $m : $m) . ':' . ($s < 10 ? '0' . $s : $s);
    }

    /**
     * Imprime en el calendario semanal las citas que hay en el rango de dias de un determinado día.
     * Esto lo hace recorriendo el vector citas y determina si existe una cita en intervalos de 00:30 minutos.
     * @param type $horaImprimir
     * @return type ID Cita
     */
    function comprobarCitaDia($horaImprimir) {
        $horaImprimir = strtotime($horaImprimir);
        foreach ($this->citas as $cita) {
            $i = (int) 0;
            foreach ($cita as $c => $v) {
                if ($i == 0) {
                    $this->temp_id = $v;
                }
                if ($i == 1) {
                    $horaCita = strtotime($v);
                    $inicioCita = $horaCita;
                    if ($horaCita == $horaImprimir) {
                        $this->id_cita = $this->temp_id;
                        $this->imprimiendoCita = true;
                    }
                }
                if ($i == 2) {
                    $horaCita = strtotime($v);
                    if ($horaCita == $horaImprimir) {
                        $this->id_cita = 0;
                        $this->imprimiendoCita = false;
                        //unset($this->citas[$cita]);
                    }
//                    if ($inicioCita >= $inicioCita && $horaCita <= $horaImprimir) {
//                        $this->id_cita = 0;
//                        $this->imprimiendoCita = false;
//                        //unset($this->citas[$cita]);
//                    }
                }
                if ($i == 3) {
                    if ($this->temp_id == $this->id_cita) {
                        $this->nombre = $v;
                    }
                }
                if ($i == 4) {
                    if ($this->temp_id == $this->id_cita) {
                        $this->procedimiento = $v;
                    }
                }
                $i++;
            }
        }
        return $this->id_cita;
    }

    function comprobarCitaDia2($hInicio, $hFinal) {
        $horaImprimirFinal = strtotime($this->sumarTiempo($hFinal, 0, 0, 0, 0, substr($this->intervaloMinutos, 3, 2), 0));
        $hInicio = strtotime($hInicio);
        $hFinal = strtotime($hFinal);
        $id_cita = 0;
        $horaCitaInicio;
        $horaCitaFinal;
        foreach ($this->citas as $cita) {
            $i = (int) 0;
            foreach ($cita as $c => $valor) {
                if ($i == 0) {
                    $this->temp_id = $valor;
                }
                if ($i == 1) {
                    $horaCita = strtotime($valor);
                    $horaCitaInicio = $horaCita;
//                    if ($horaCita == $horaImprimir) {
//                        $id_cita = $this->temp_id;
//                    }
                }
                if ($i == 2) {
                    $horaCita = strtotime($valor);
                    if ($hFinal > $horaCitaInicio && $hFinal <= $horaCita) {
                        $id_cita = $this->temp_id;
                    }
                    if ($hInicio < $horaCitaInicio && $hFinal > $horaCita) {
                        $id_cita = $this->temp_id;
                    }
//                    if ($horaCita == $horaImprimirFinal) {
//                        $id_cita = $this->temp_id;
//                    }
                }
                $i++;
            }
        }
        return $id_cita;
    }

    /**
     * Imprime en el calendario semanal las citas que hay en el rango de dias de un determinado lunes
     * al siguiente domingo. Esto lo hace recorriendo el vector citas y determina si existe una cita 
     * en intervalos de 00:30 minutos.
     */
    function comprobarCitaSemana($horaImprimir) {
        $horaCitaInicio;
        $horaCitaFinal;
        $horaImprimirFinal = strtotime($this->sumarTiempo($hFinal, 0, 0, 0, 0, substr($this->intervaloMinutos, 3, 2), 0));
        $horaImprimir = strtotime($horaImprimir);
        foreach ($this->citas as $cita) {
            $i = (int) 0;
            foreach ($cita as $c => $valor) {
                if ($i == 0) {
                    $this->temp_id = $valor;
                }
                if ($i == 1) {
                    $horaCita = strtotime($valor);
                    $horaCitaInicio = $horaCita;
                    if ($horaCita == $horaImprimir) {
                        $this->id_cita = $this->temp_id;
                        $this->imprimiendoCita = true;
                    }
                }
                if ($i == 2) {
                    $horaCita = strtotime($valor);
                    if ($horaImprimir > $horaCitaInicio && $horaImprimir < $horaCita) {
                        $this->id_cita = $this->temp_id;
                    }
                    if ($horaCita == $horaImprimirFinal) {
                        $this->id_cita = $this->temp_id;
                    }
                }
                if ($i == 3) {
                    if ($this->temp_id == $this->id_cita) {
                        $this->nombre = $valor;
                    }
                }
                if ($i == 4) {
                    if ($this->temp_id == $this->id_cita) {
                        $this->procedimiento = $valor;
                    }
                }
                $i++;
            }
        }
        return $this->id_cita;
    }

    function comprobarCitaMes($fechaImprimir) {
        $divDiaCita;
        $fechaEvualuar = strtotime($fechaImprimir);
        $fechaImprimir = substr($fechaImprimir, 0, 4) . '-' . substr($fechaImprimir, 5, 2) . '-' . substr($fechaImprimir, 8, 2);
        $hayCita = false;
        $alturaOcupado = (int) 52;
        $alturalibre = (int) 52;
        $numeroDia = $this->numeroDia(substr($fechaImprimir, 8, 2), substr($fechaImprimir, 5, 2), substr($fechaImprimir, 0, 4));
        $minutos = $this->comprobarHorarioMes($numeroDia);
        foreach ($this->citas as $cita) {
            $i = (int) 0;
            $this->imprimiendoCita = false;
            foreach ($cita as $c => $valor) {
                if ($i == 0) {
                    $valor = strtotime($valor);
                    if ($fechaEvualuar == $valor) {
                        $this->imprimiendoCita = true;
                        $hayCita = true;
                    }
                }
                if ($i == 1) {
                    if ($this->imprimiendoCita == true) {
                        if ($minutos == 0) {
                            $divDiaCita = '<div class="campoBloqueado" id="' . $fechaImprimir . '" style="min-height: 52px; height: 52px;" ></div>';
                        } else {
                            if ((int) $valor == $minutos) {
                                $divDiaCita = '<div class="campoLleno" id="' . $fechaImprimir . '" style="min-height:' . $alturaOcupado . 'px; height: ' . $alturaOcupado . 'px;" onclick="verDia(this.id)" ></div>';
                            } else if ((int) $valor < $minutos) {
                                $alturaOcupado = round((52 * (int) $valor) / $minutos, 0);
                                $alturalibre = 52 - $alturaOcupado;
                                $divDiaCita = '<div class="campoLibre" id="' . $fechaImprimir . '" style="min-height:' . $alturalibre . 'px; height: ' . $alturalibre . 'px;" onclick="verDia(this.id)" ></div><div class="campoLleno" id="' . $fechaImprimir . '" style="min-height:' . $alturaOcupado . 'px; height: ' . $alturaOcupado . 'px;" onclick="verDia(this.id)" ></div>';
                            }
                        }
                    }
                }
                $i++;
            }
        }
        if ($hayCita == false) {
            if ($minutos == 0) {
                $divDiaCita = '<div class="campoBloqueado" id="' . $fechaImprimir . '" style="min-height: 52px; height: 52px;" ></div>';
            } else {
                $divDiaCita = '<div class="campoLibre" id="' . $fechaImprimir . '" style="min-height:' . $alturalibre . 'px" onclick="verDia(this.id)" ></div>';
            }
        }
        return $divDiaCita;
    }

    /**
     * Imprime el calendario mensual de citas según un mes dado.
     */
    function ImprimeMes() {
        try {
            $diasSemana = array();
            $meses = array();
            $diasSemana[1] = _("lunes");
            $diasSemana[] = _("martes");
            $diasSemana[] = _("miercoles");
            $diasSemana[] = _("jueves");
            $diasSemana[] = _("viernes");
            $diasSemana[] = _("sabado");
            $diasSemana[] = _("domingo");
            $meses[1] = _("enero");
            $meses[] = _("febrero");
            $meses[] = _("marzo");
            $meses[] = _("abril");
            $meses[] = _("mayo");
            $meses[] = _("junio");
            $meses[] = _("julio");
            $meses[] = _("agosto");
            $meses[] = _("septiembre");
            $meses[] = _("octubre");
            $meses[] = _("noviembre");
            $meses[] = _("diciembre");
            if (!isset($_GET['mes']) || !is_numeric($_GET['mes'])) {
                $mes = date("n");
            } else {
                $mes = $_GET['mes'];
            }
            if (!isset($_GET['anho']) || !is_numeric($_GET['anho'])) {
                $year = date("Y");
            } else {
                $year = $_GET['anho'];
            }

            function conv($day) {
                if ($day == 0)
                    return 7;
                else
                    return $day;
            }

            $mes2 = $mes;

            if (strlen($mes2) == 1) {
                $mes2 = '0' . $mes2;
            }

            $fechaInicio = $year . '-' . $mes2 . '-01 06:00:00';

            $this->cargarHorario();
//            $this->actualizarSesion();
            $this->cargarCitasMes($fechaInicio);

            $dias = date("t", mktime(0, 0, 0, $mes, 1, $year)); // DIAS DEL MES
            $diaSemInicio = conv(date("w", mktime(0, 0, 0, $mes, 1, $year))); // DIA DE LA SEMANA DEL DIA 1 DEL MES
            $diaSemFinal = conv(date("w", mktime(0, 0, 0, $mes, $dias, $year))); // DIA DE LA SEMANA DEL ÚLTIMO DIA DEL MES
            $celdasLibresInicio = $diaSemInicio - 1; // CELDAS LIBRES EN LA PRIMERA FILA
            $celdasOcupadasInicio = 7 - $celdasLibresInicio; // CELAS OCUPADAS EN LA PRIMERA FILA
            $celdasLibresFinal = 7 - $diaSemFinal; // CELDAS LIBRES EN LA ÚLTIMA FILA
            $celdasOcupadasFinal = 7 - $celdasLibresFinal; // CELDAS OCUPADAS EN LA ÚLTIMA FILA
            echo '<table class="vistaMes" border="0" cellspacing="0" cellpadding="0"><tr class="mesDiasCabeza">';
            echo '<td title="' . _("lunes") . '">' . _("lunes") . '</td><td title="' . _("martes") . '">' . _("martes") . '</td><td title="' . _("miercoles") . '">' . _("miercoles") . '</td><td title="' . _("jueves") . '">' . _("jueves") . '</td><td title="' . _("viernes") . '">' . _("viernes") . '</td><td title="' . _("sabado") . '">' . _("sabado") . '</td><td title="' . _("domingo") . '">' . _("domingo") . '</td></tr><tr>';
            for ($i = 1; $i <= $celdasLibresInicio; $i++) {
                echo "<td><div class='mes_anterior'></div></td>";
            }
            for ($i = 1, $u = $celdasLibresInicio; $i <= $dias; $i++, $u++) {
                if ($u == 7) {
                    echo "</tr><tr>";
                    $u = 0;
                }
                $diaSemana = conv(date('w', mktime(0, 0, 0, $mes, $i, $year)));

                $diaActual;
                if (strlen($i) == 1) {
                    $diaActual = '0' . $i;
                } else {
                    $diaActual = $i;
                }

                $fechaActual = $year . '-' . $mes2 . '-' . $diaActual;

                $diaSema2 = $diasSemana[$diaSemana];
                echo '<td class="mesDiasFecha" title="' . $diaSema2 . ' ' . $i . ', de ' . $meses[$mes] . ' de ' . $year . '"';
                if ($i == date('d') && date('n') == $mes && date('Y') == $year) {
                    echo ' class="today"';
                    echo '><div class="mes_cabeza_today">' . $i . '</div><div class="mes_cuerpo_today">' . $this->comprobarCitaMes($fechaActual) . '</div></td>';
                } else {
                    echo '><div class="mes_cabeza">' . $i . '</div><div class="mes_cuerpo">' . $this->comprobarCitaMes($fechaActual) . '</div></td>';
                }
                $this->imprimiendoCita = false;
            }
            if ($dias <= 29) {
                if ($celdasLibresInicio == 0) {
                    $diasFaltantes = 28 - $dias - $celdasLibresInicio;
                } else {
                    $diasFaltantes = 35 - $dias - $celdasLibresInicio;
                }
            } else {
                if ($celdasLibresInicio <= 5) {
                    $diasFaltantes = 35 - $dias - $celdasLibresInicio;
                } else {
                    $diasFaltantes = 42 - $dias - $celdasLibresInicio;
                }
            }



            for ($i = 1; $i <= $diasFaltantes; $i++) {
                echo "<td><div class='mes_anterior'></div></td>";
            }
            echo "</tr></table>";
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    /**
     * Devuelve el numero de dia de la semana segun una fecha dada.
     * @param type $day
     * @param type $month
     * @param type $year
     * @return NumeroDia 
     */
    function numeroDia($day, $month, $year) {
        $numeroDia = date('N', mktime(0, 0, 0, $month, $day, $year));
        return $numeroDia;
    }

    /**
     * Devuelve la cantidad de dias que tiene un mes dado.
     * @param type $Month
     * @param type $Year
     * @return Cantidad de Dias del Mes
     */
    function cantidadDias($Month, $Year) {
        if (is_callable("cal_days_in_month")) {
            return cal_days_in_month(CAL_GREGORIAN, $Month, $Year);
        } else {
            return date("d", mktime(0, 0, 0, $Month + 1, 0, $Year));
        }
    }

    /**
     * Devuelve el mes del lunes de la vista semanal.
     * @param type $day
     * @param type $month
     * @param type $year
     * @return Mes del primer lunes de la vista semanal.
     */
    function mesUltimoLunes($day, $month, $year) {

        $mesUltimoLunes = date('Y/m/d', strtotime('last Monday', mktime(0, 0, 0, $month, $day, $year)));
        $mesUltimoLunes = substr($mesUltimoLunes, 5, 2);

        return $mesUltimoLunes;
    }

    /**
     * Devuelve el mes del domingo de la vista semanal.
     * @param type $day
     * @param type $month
     * @param type $year
     * @return Mes del domingo en la vista semanal.
     */
    function mesProximoDomingo($day, $month, $year) {

        $mesProximoDomingo = date('Y/m/d', strtotime('Next Sunday', mktime(0, 0, 0, $month, $day, $year)));
        $mesProximoDomingo = substr($mesProximoDomingo, 5, 2);

        return $mesProximoDomingo;
    }

    /**
     * Devuelve la fecha del lunes de la vista semanal.
     * @param type $day
     * @param type $month
     * @param type $year
     * @return Fecha del lunes de la vista semanal.
     */
    function fechaUltimoLunes($day, $month, $year) {
        $fechaUltimoLunes = date('Y-m-d', strtotime('last Monday', mktime(0, 0, 0, $month, $day, $year)));
        return $fechaUltimoLunes;
    }

    /**
     * Devuelve la fecha del Domingo de la vista semanal.
     * @param type $day
     * @param type $month
     * @param type $year
     * @return Fecha del Domingo de la vista semanal.
     */
    function fechaProximoDomingo($day, $month, $year) {
        $mesProximoDomingo = date('Y-m-d', strtotime('Next Sunday', mktime(0, 0, 0, $month, $day, $year)));
        return $mesProximoDomingo;
    }

    /**
     * Devuelve la fecha del lunes anterior según un día dado.
     * @param type $day
     * @param type $month
     * @param type $year
     * @return Fecha del lunes anterior según un día dado.
     */
    function ultimoLunes($day, $month, $year) {
        $ultimoLunes = date('N', mktime(0, 0, 0, $month, $day, $year));
        if ($ultimoLunes !== "1") {
            $ultimoLunes = date('Y/m/d', strtotime('last Monday', mktime(0, 0, 0, $month, $day, $year)));
            $ultimoLunes = substr($ultimoLunes, 8, 2);
        } else {
            if ($day == date('d') && $month == date('m') && $year == date('Y')) {
                $ultimoLunes = date('d');
            } else {
                $ultimoLunes = $day;
            }
        }
        return $ultimoLunes;
    }

    /**
     * Devuelve la fecha del próximo domingo según un día dado.
     * @param type $day
     * @param type $month
     * @param type $year
     * @return Fecha del próximo domingo según un día dado.
     */
    function proximoDomingo($day, $month, $year) {
        $proximoDomingo = date('N', mktime(0, 0, 0, $month, $day, $year));
        if ($proximoDomingo !== "7") {
            $proximoDomingo = date('Y/m/d', strtotime('Next Sunday', mktime(0, 0, 0, $month, $day, $year)));
            $proximoDomingo = substr($proximoDomingo, 8, 2);
        } else {
            if ($day == date('d') && $month == date('m') && $year == date('Y')) {
                $proximoDomingo = date('d');
            } else {
                $proximoDomingo = $day;
            }
        }
        return $proximoDomingo;
    }

    /**
     * Devuelve un TD con codigo html, se utiliza en la vista semanal.
     * @param type $fecha
     * @param type $dia
     * @return TD Fecha
     */
    function imprimeEvento($fecha, $dia) {
        $hoy = date("Y-m-d H:i:s");
        date_default_timezone_set("America/Costa_Rica");
//        putenv("America/Costa_Rica");
        $hoy = strtotime($hoy);
        $esMayor = false;
        $mes = substr($dia, 5, 2);
        $ano = $fecha[0];
        if ($mes > 12) {
            $mes = "01";
            $ano = $ano + 1;
        }
        if (strlen($fecha[2]) == 1) {
            $fecha[2] = "0" . $fecha[2];
        }
        if (strlen($fecha[3]) == 1) {
            $fecha[3] = "0" . $fecha[3];
        }
        $diaActual1 = substr($dia, 8, 2);
        $fechaActual = $ano . "-" . $mes . "-" . $diaActual1 . " " . $fecha[3] . ":" . $fecha[4] . ":" . $fecha[5];

        $evaluar = strtotime($fechaActual);
        if ($evaluar > $hoy) {
            $esMayor = true;
        }
        $diaActual = date('Y') . '-' . date('m') . '-' . date('d');
        $numeroDia = $this->numeroDia($diaActual1, $mes, $ano);
        $hora = $fecha[3] . ":" . $fecha[4];
        $this->comprobarHorarioSemana($numeroDia, $hora);
        $diaComparar = substr($fechaActual, 0, 10);
        $Id_Cita = $this->comprobarCitaSemana($fechaActual);

        if ($this->horaLaboral == true) {
            if ($diaComparar == $diaActual) {

                if ($Id_Cita == 0) {
                    if ($esMayor == true) {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_libre" id="' . $fechaActual . '" onclick="formNuevaCita(this.id)"></div></td>';
                    } else {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_libre_vieja" id="' . $fechaActual . '" ></div></td>';
                    }
                } else {
                    if ($this->imprimiendoCita == true) {
                        if ($esMayor == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_ocupadaI_today" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . '</div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_ocupadaI_today" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . '</div></td>';
                        }
                    } else {
                        if ($esMayor == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_ocupada_today" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)"  onmouseover="asignarID(this.id)"></div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_ocupada_today" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                        }
                    }
                }
            } else {

                if ($esMayor == true) {
                    if ($Id_Cita == 0) {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_libre" id="' . $fechaActual . '" onclick="formNuevaCita(this.id)" ></div></td>';
                    } else {
                        if ($this->imprimiendoCita == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupadaI" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . '</div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupada" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                        }
                    }
                } else {
                    if ($Id_Cita == 0) {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_libre_vieja" ></div></td>';
                    } else {
                        if ($this->imprimiendoCita == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupadaI" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . '</div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupada" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                        }
                    }
                }
            }
        } else {
            if ($Id_Cita == 0) {

                $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="no_disponible"></div></td>';
            } else {
                if ($this->imprimiendoCita == true) {
                    if ($esMayor == true) {

                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . '</div></td>';
                    } else {

                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . '</div></td>';
                    }
                } else {
                    if ($esMayor == true) {

                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                    } else {

                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                    }
                }
            }
        }
        $this->id_cita = 0;
        $this->imprimiendoCita = false;
        $this->horaLaboral = false;
        return $celda;
    }

    /**
     * Devuelve un TD con codigo html, se utiliza en la vista día.
     * @param type $fecha
     * @param type $dia
     * @return TD Fecha
     */
    function imprimeCandidatosDia($fecha, $dia) {
        $hoy = date("Y-m-d H:i:s");
        date_default_timezone_set("America/Costa_Rica");
        $hoy = strtotime($hoy);
        $esMayor = false;
        $Id_Cita = (int) 0;
        if (strlen($fecha[2]) == 1) {
            $fecha[2] = "0" . $fecha[2];
        }
        if (strlen($fecha[3]) == 1) {
            $fecha[3] = "0" . $fecha[3];
        }
        $fechaActual = $fecha[0] . "-" . $fecha[1] . "-" . $fecha[2] . " " . $fecha[3] . ":" . $fecha[4] . ":" . $fecha[5];
        $evalar = strtotime($fechaActual);
        if ($evalar > $hoy) {
            $esMayor = true;
        }
        $numeroDia = $this->numeroDia($fecha[2], $fecha[1], $fecha[0]);
        $hora = $fecha[3] . ":" . $fecha[4];
        $this->comprobarHorarioDia($numeroDia, $hora);
        $Id_Cita = $this->comprobarCitaDia($fechaActual);
        if ($this->horaLaboral == true) {
            if ($esMayor == true) {
                if ($Id_Cita == 0) {
                    $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_libre" id="' . $fechaActual . '" onclick="formNuevaCita(this.id)"></div></td>';
                } else {
                    if ($this->imprimiendoCita == true) {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupadaI" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)">' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                    } else {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupada" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)"></div></td>';
                    }
                }
            } else {
                if ($Id_Cita == 0) {
                    $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_libre_vieja" ></div></td>';
                } else {
                    if ($this->imprimiendoCita == true) {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupadaI" id="' . $Id_Cita . '" >' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                    } else {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupada" id="' . $Id_Cita . '" ></div></td>';
                    }
                }
            }
        } else {
            if ($Id_Cita == 0) {
                $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="no_disponible"></div></td>';
            } else {
                if ($this->imprimiendoCita == true) {
                    if ($esMayor == true) {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" >' . $this->nombre . '</div></td>';
                    } else {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" >' . $this->nombre . '</div></td>';
                    }
                } else {

                    if ($esMayor == true) {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)"></div></td>';
                    } else {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" ></div></td>';
                    }
                }
            }
        }
        if ($this->intervaloCSS == 1) {
            $this->intervaloCSS = 2;
        } else if ($this->intervaloCSS == 2) {
            $this->intervaloCSS = 1;
        }
        $this->imprimiendoCita = false;
        $this->horaLaboral = false;

        $esMayor = false;
        return $celda;
    }

    /**
     * Devuelve un TD con codigo html, se utiliza en la vista día.
     * @param type $fecha
     * @param type $dia
     * @return TD Fecha
     */
    function imprimeEventoDia($fecha, $dia) {
        $hoy = date("Y-m-d H:i:s");
        date_default_timezone_set("America/Costa_Rica");
        $hoy = strtotime($hoy);
        $esMayor = false;
        $Id_Cita = (int) 0;
        if (strlen($fecha[1]) == 1) {
            $fecha[1] = "0" . $fecha[1];
        }
        if (strlen($fecha[2]) == 1) {
            $fecha[2] = "0" . $fecha[2];
        }
        if (strlen($fecha[3]) == 1) {
            $fecha[3] = "0" . $fecha[3];
        }
        $fechaActual = $fecha[0] . "-" . $fecha[1] . "-" . $fecha[2] . " " . $fecha[3] . ":" . $fecha[4] . ":" . $fecha[5];
        $evaluar = strtotime($fechaActual);
        if ($evaluar > $hoy) {
            $esMayor = true;
        }
        $diaActual = date('Y') . '-' . date('m') . '-' . date('d');
        $diaComparar = substr($fechaActual, 0, 10);
        $numeroDia = $this->numeroDia($fecha[2], $fecha[1], $fecha[0]);
        $hora = $fecha[3] . ":" . $fecha[4];
        $this->comprobarHorarioDia($numeroDia, $hora);
        $Id_Cita = $this->comprobarCitaDia($fechaActual);
        if ($this->horaLaboral == true) {
            if ($diaComparar == $diaActual) {
                if ($Id_Cita == 0) {
                    if ($esMayor == true) {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_libre" id="' . $fechaActual . '" onclick="formNuevaCita(this.id)"></div></td>';
                    } else {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_libre_vieja" id="' . $fechaActual . '" ></div></td>';
                    }
                } else {
                    if ($this->imprimiendoCita == true) {
                        if ($esMayor == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_ocupadaI_today" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_ocupadaI_today" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                        }
                    } else {
                        if ($esMayor == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_ocupada_today" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)"  onmouseover="asignarID(this.id)"></div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '_today"><div class="cita_ocupada_today" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                        }
                    }
                }
            } else {
                if ($esMayor == true) {
                    if ($Id_Cita == 0) {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_libre" id="' . $fechaActual . '" onclick="formNuevaCita(this.id)" ></div></td>';
                    } else {
                        if ($this->imprimiendoCita == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupadaI" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupada" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                        }
                    }
                } else {
                    if ($Id_Cita == 0) {
                        $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_libre_vieja" ></div></td>';
                    } else {
                        if ($this->imprimiendoCita == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupadaI" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupada" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                        }
                    }
                }
            }
        } else {

            if ($Id_Cita == 0) {
                $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="no_disponible"></div></td>';
            } else {
                if ($diaComparar == $diaActual) {
                    if ($this->imprimiendoCita == true) {
                        if ($esMayor == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible_today" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible_today" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                        }
                    } else {
                        if ($esMayor == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible_today" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible_today" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                        }
                    }
                } else {
                    if ($this->imprimiendoCita == true) {
                        if ($esMayor == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)">' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                        }
                    } else {
                        if ($esMayor == true) {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" onclick="verCitaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                        } else {
                            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" onclick="verCitaViejaxID(this.id)" onmouseover="asignarID(this.id)"></div></td>';
                        }
                    }
                }
            }
        }

        if ($this->intervaloCSS == 1) {
            $this->intervaloCSS = 2;
        } else if ($this->intervaloCSS == 2) {
            $this->intervaloCSS = 1;
        }
        $this->imprimiendoCita = false;
        $this->horaLaboral = false;
        $esMayor = false;
        return $celda;
    }

    /**
     * Suma el tiempo a una fecha dada.
     * @param type $date
     * @param type $dd
     * @param type $mm
     * @param type $yy
     * @param type $hh
     * @param type $mn
     * @param type $ss
     * @return FechaFinal 
     */
    function sumarTiempo($date, $dd, $mm, $yy, $hh, $mn, $ss) {
        $date_r = getdate(strtotime($date));
        $date_result = date('Y-m-d H:i:s', mktime(($date_r['hours'] + $hh), ($date_r['minutes'] + $mn), ($date_r['seconds'] + $ss), ($date_r['mon'] + $mm), ($date_r['mday'] + $dd), ($date_r['year'] + $yy)));
        return $date_result;
    }

    /**
     * Devuelve un TD con codigo html, se utiliza en la vista de candidatos para reasignar una cita.
     * @param type $fecha
     * @param type $dia
     * @return TD Fecha
     */
    function imprimeEventoDiaCandidato($fecha, $dia, $tiempo) {
        $hoy = date("Y-m-d H:i:s");
        date_default_timezone_set("America/Costa_Rica");
        $hoy = strtotime($hoy);
        $esMayor = false;
        $Id_Cita = (int) 0;
        if (strlen($fecha[2]) == 1) {
            $fecha[2] = "0" . $fecha[2];
        }
        if (strlen($fecha[3]) == 1) {
            $fecha[3] = "0" . $fecha[3];
        }
        $fechaActual = $fecha[0] . "-" . $fecha[1] . "-" . $fecha[2] . " " . $fecha[3] . ":" . $fecha[4] . ":" . $fecha[5];
        $evaluar = strtotime($fechaActual);
        if ($evaluar > $hoy) {
            $esMayor = true;
        }
        $numeroDia = $this->numeroDia($fecha[2], $fecha[1], $fecha[0]);
        $hora = $fecha[3] . ":" . $fecha[4];
        $this->comprobarHorarioDia($numeroDia, $hora);
        $Id_Cita = $this->comprobarCitaDia($fechaActual);
        $finalCita = $this->sumarTiempo($fechaActual, 0, 0, 0, 0, $tiempo, 0);
        $disponible = $this->comprobarCitaDia2($fechaActual, $finalCita);
        if ($disponible != 0) {
            $disponible = 1;
        } else {
            $finalCita2 = substr($finalCita, 11, 5);
            $finalCita2 = strtotime($finalCita2);
            $finalHorario = strtotime($this->horaFinalDia);
            if ($finalCita2 > $finalHorario) {
                $disponible = 1;
            }
        }

        $fechaActual = $fechaActual . " " . substr($finalCita, 11, 8) . " " . $disponible;
        $fechaActual = str_replace(" ", "-", $fechaActual);
        if ($this->horaLaboral == true) {
            if ($Id_Cita == 0) {
                if ($esMayor == true) {
                    $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_libre" id="' . $fechaActual . '" onclick="actualizaValoresCita(this.id)"></div></td>';
                } else {
                    $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_libre_vieja" id="' . $fechaActual . '" ></div></td>';
                }
            } else {
                if ($this->imprimiendoCita == true) {
                    $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupadaI" id="' . $Id_Cita . '" >' . $this->nombre . ": " . $this->procedimiento . '</div></td>';
                } else {
                    $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_ocupada" id="' . $Id_Cita . '" ></div></td>';
                }
            }
        } else {
            if ($Id_Cita == 0) {
                $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="no_disponible"></div></td>';
            } else {
                if ($this->imprimiendoCita == true) {
                    $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" >' . $this->nombre . '</div></td>';
                } else {
                    $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_no_disponible" id="' . $Id_Cita . '" ></div></td>';
                }
            }
        }
        if ($this->intervaloCSS == 1) {
            $this->intervaloCSS = 2;
        } else if ($this->intervaloCSS == 2) {
            $this->intervaloCSS = 1;
        }
        $this->imprimiendoCita = false;
        $this->horaLaboral = false;
        $esMayor = false;
        return $celda;
    }

    function imprimeEventoDiaRecargo($fecha, $dia, $tiempo) {
        $hoy = date("Y-m-d H:i:s");
        date_default_timezone_set("America/Costa_Rica");
        $hoy = strtotime($hoy);
        $esMayor = false;
        $Id_Cita = (int) 0;
        if (strlen($fecha[2]) == 1) {
            $fecha[2] = "0" . $fecha[2];
        }
        if (strlen($fecha[3]) == 1) {
            $fecha[3] = "0" . $fecha[3];
        }
        $fechaActual = $fecha[0] . "-" . $fecha[1] . "-" . $fecha[2] . " " . $fecha[3] . ":" . $fecha[4] . ":" . $fecha[5];
        $evaluar = strtotime($fechaActual);
        if ($evaluar > $hoy) {
            $esMayor = true;
        }
        $numeroDia = $this->numeroDia($fecha[2], $fecha[1], $fecha[0]);
        $hora = $fecha[3] . ":" . $fecha[4];
        $this->comprobarHorarioDia($numeroDia, $hora);
        
        $finalCita = $this->sumarTiempo($fechaActual, 0, 0, 0, 0, $tiempo, 0);

        $fechaActual = $fechaActual . " " . substr($finalCita, 11, 8) . " 1" ;
        $fechaActual = str_replace(" ", "-", $fechaActual);
        if ($this->horaLaboral == true) {
            if ($esMayor == true) {
                $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_libre" id="' . $fechaActual . '" onclick="actualizaValoresCita(this.id)"></div></td>';
            } else {
                $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="cita_libre_vieja" id="' . $fechaActual . '" ></div></td>';
            }
        } else {
            $celda = '<td class="intervalo' . $this->intervaloCSS . '"><div class="no_disponible"></div></td>';
        }
        if ($this->intervaloCSS == 1) {
            $this->intervaloCSS = 2;
        } else if ($this->intervaloCSS == 2) {
            $this->intervaloCSS = 1;
        }
        $this->imprimiendoCita = false;
        $this->horaLaboral = false;
        $esMayor = false;
        return $celda;
    }

    /**
     * Imprime en el calendario la vista semanal.
     */
    function ImprimeSemana() {
        try {
            $respuesta;
            if (isset($_GET['dia'])) {
                $diaActual = $_GET['dia'];
            } else {
                $diaActual = date('d');
            }
            if (isset($_GET['mes'])) {
                $mesActual = $_GET['mes'];
            } else {
                $mesActual = date('m');
            }
            if (isset($_GET['anho'])) {
                $anoActual = $_GET['anho'];
            } else {
                $anoActual = date('Y');
            }
            $mesLunesAnterior = $this->mesUltimoLunes($diaActual, $mesActual, $anoActual);
            $mesProximoDomingo = $this->mesProximoDomingo($diaActual, $mesActual, $anoActual);

            $fechaLunesAnterior = $this->fechaUltimoLunes($diaActual, $mesActual, $anoActual);
            $fechaProximoDomingo = $this->fechaProximoDomingo($diaActual, $mesActual, $anoActual);

            $diasMaximosMesLunesAnterior = $this->cantidadDias($mesLunesAnterior, $anoActual);
            $ultimoLunes = $this->ultimoLunes($diaActual, $mesActual, $anoActual); //VERIFICA EL ULTIMO LUNES APARTIR DE HOY
            $proximoDomingo = $this->proximoDomingo($diaActual, $mesActual, $anoActual);
            $anoProximo = $anoActual + 1;
            $diasMaximosMesActual = $this->cantidadDias($mesActual, $anoActual);
            $mesAnterior = $mesActual - 1;
            $diasMaximosMesAnterior = $this->cantidadDias($mesAnterior, $anoActual);
            $mesProximo = $mesActual + 1;
            $diasMaximosMesProximo = $this->cantidadDias($mesProximo, $anoActual);
            $diasToal = 7;
            $diasMaximosImprimir = 0;
            $diasFaltantesImprimir = 0;
            $fecha = array();
            $diasSemana = array();
            $meses = array();
            $diasEncontrados = array();
            $diasSemana[1] = _("lunes");
            $diasSemana[] = _("martes");
            $diasSemana[] = _("miercoles");
            $diasSemana[] = _("jueves");
            $diasSemana[] = _("viernes");
            $diasSemana[] = _("sabado");
            $diasSemana[] = _("domingo");
            $meses[1] = _("enero");
            $meses[] = _("febrero");
            $meses[] = _("marzo");
            $meses[] = _("abril");
            $meses[] = _("mayo");
            $meses[] = _("junio");
            $meses[] = _("julio");
            $meses[] = _("agosto");
            $meses[] = _("septiembre");
            $meses[] = _("octubre");
            $meses[] = _("noviembre");
            $meses[] = _("diciembre");

            if (isset($_GET['id_empleado']) && $_GET['id_empleado'] != "0") {
                $intervaloMinutos = $this->intervaloEmpleado();
                $horaInicio = $this->traerRangoHorario($_GET['id_empleado'], $_GET['centromedico'], 1);
                $horaFinal = $this->traerRangoHorario($_GET['id_empleado'], $_GET['centromedico'], 2);
                $this->intervaloMinutos = $this->intervaloEmpleado();
            } else {
                $horaInicio = $this->horaInicio;
                $horaFinal = $this->horaFinal;
                $intervaloMinutos = $this->intervaloMinutos;
            }
            $horaInicio2 = $horaInicio;
            $horaFinal2 = $horaFinal;
            $horaActual = substr($horaInicio, 1, 1);
            $intervaloHoras = "01:00";
            $segundos = "00";
            $horaInicio = split(":", $horaInicio);
            $horaFinal = split(":", $horaFinal);
            $intervaloMinutos = split(":", $intervaloMinutos);
            $intervaloHoras = split(":", $intervaloHoras);
            $hora = (int) $horaInicio[0];
            $minutos = (int) $horaInicio[1] + (int) $intervaloMinutos[1];

            $fechaInicio = $fechaLunesAnterior . ' ' . '06:00:00';
            $fechaFinal = $fechaProximoDomingo . ' ' . '23:00:00';
            $this->cargarHorario();
//            $this->actualizarSesion();
            $this->cargarCitas($fechaInicio, $fechaFinal);

            $k = 1;
            $respuesta = '<table id="vistaSemana" class="vistaSemana" border="0" cellspacing="0" cellpadding="0">';
            $respuesta .= '<tr class="semanaDiasCabeza">';
            $respuesta .= '<td class="horas" style="width:51px; height:22px; "></td>';
            if ($ultimoLunes + 6 > $diasMaximosMesLunesAnterior) {

                $diasMaximos = "";
                if ($mesActual == date('m')) {
                    $diasMaximos = $diasMaximosMesLunesAnterior;
                } else {
                    $diasMaximos = $diasMaximosMesLunesAnterior;
                }

                $diasFaltantes = $diasMaximos - ($ultimoLunes - 1);
                $proximosDias = 7 - $diasFaltantes;
                for ($j = $ultimoLunes; $j <= $diasMaximos; $j++) {
                    $agregarDia = "";
                    $respuesta .= "<td class='semanacabeza'>" . $diasSemana[$k] . ", " . $j . "</td>";
                    $agregarDia = $j;
                    $diasEncontrados[$k] = $anoActual . "-" . $mesLunesAnterior . "-" . $agregarDia;

                    $k++;
                }
                for ($h = 1; $h <= $proximosDias; $h++) {

                    $agregarDia = "";
                    $agregarDia = $h;
                    if (strlen($h) == 1) {
                        $agregarDia = "0" . $h;
                    } else {
                        $agregarDia = $h;
                    }
                    $respuesta .= "<td class='semanacabezaFecha'>" . $diasSemana[$k] . ", " . $agregarDia . "</td>";
                    $diasEncontrados[$k] = $anoActual . "-" . $mesProximoDomingo . "-" . $agregarDia;
                    $k++;
                }
            } else {
                for ($i = $ultimoLunes; $i <= $proximoDomingo; $i++) {
                    $agregarDia = "";
                    if (strlen($i) == 1) {
                        $agregarDia = "0" . $i;
                    } else {
                        $agregarDia = $i;
                    }
                    $respuesta .= "<td class='semanacabezaFecha'>" . $diasSemana[$k] . ", " . $agregarDia . "</td>";
                    $diasEncontrados[$k] = $anoActual . "-" . $mesProximoDomingo . "-" . $agregarDia;

                    $k++;
                }
            }
            $respuesta .= '</tr>';

            $k = 1;
            $hInicio = strtotime($horaActual);
            $hFinal = strtotime($horaFinal2);
            while ($hInicio <= $hFinal) {
                if ($k == 1) {
                    $fecha[0] = $anoActual;
                    $fecha[1] = $mesActual;
                    $fecha[2] = substr($diasEncontrados[$k], 1, 1);
                    $fecha[3] = $horaActual;
                    $fecha[4] = "00";
                    $fecha[5] = "00";
                    //$this->horaTemp = "07:00";
                    $respuesta .= '<tr>';
                    $respuesta .= '<td class="horas">' . substr($horaInicio2, 1, 1) . ':00</td>' . $this->imprimeEvento($fecha, $diasEncontrados[1]) . $this->imprimeEvento($fecha, $diasEncontrados[2]) . $this->imprimeEvento($fecha, $diasEncontrados[3]) . $this->imprimeEvento($fecha, $diasEncontrados[4]) . $this->imprimeEvento($fecha, $diasEncontrados[5]) . $this->imprimeEvento($fecha, $diasEncontrados[6]) . $this->imprimeEvento($fecha, $diasEncontrados[7]);
                    $respuesta .= '</tr>';


                    $minutos = $minutos % 60;
                    if ($minutos == 0) {
                        $minutos = "00";
                        $hora += (int) $intervaloHoras[0];
                    }
                } else {


                    $minutos = $minutos % 60;
                    if ($minutos == 0) {
                        $minutos = "00";
                        $hora += (int) $intervaloHoras[0];
                    }



                    $fecha[0] = $anoActual;
                    $fecha[1] = $mesActual;
                    $fecha[2] = $diasEncontrados[$k];
                    if (strlen($horaActual) == 5) {
                        $fecha[3] = $hora;
                    } else {
                        $fecha[3] = $hora;
                    }

                    $fecha[4] = $minutos;
                    $fecha[5] = $segundos;
                    $horaActual = $hora . ":" . $minutos;
                    if ($this->intervaloCSS == 1) {
                        $this->intervaloCSS = 2;
                    } else if ($this->intervaloCSS == 2) {
                        $this->intervaloCSS = 1;
                    }
                    $respuesta .= '<tr>';
                    $respuesta .= '<td class="horas">' . $horaActual . '</td>' . $this->imprimeEvento($fecha, $diasEncontrados[1]) . $this->imprimeEvento($fecha, $diasEncontrados[2]) . $this->imprimeEvento($fecha, $diasEncontrados[3]) . $this->imprimeEvento($fecha, $diasEncontrados[4]) . $this->imprimeEvento($fecha, $diasEncontrados[5]) . $this->imprimeEvento($fecha, $diasEncontrados[6]) . $this->imprimeEvento($fecha, $diasEncontrados[7]);
                    $respuesta .= '</tr>';
                    //$this->horaTemp = $fecha[3] . ":" . $fecha[4];
                    $minutos += (int) $intervaloMinutos[1];
                    if ($minutos > 60) {
                        $hora += (int) $intervaloHoras[0];
                    }
                    $hInicio = strtotime($horaActual);
                }
                $k++;
            }

            $respuesta .= '</table>';
            echo $respuesta;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    /**
     *  Devuelve el último día de un determinado mes.
     * @param type $mes
     * @param type $ano
     * @return type Time
     */
    function ultimo_dia($mes, $ano) {
        return strftime("%d", mktime(0, 0, 0, $mes + 1, 0, $ano));
    }

    /**
     * Imprime en el calendario la vista de día.
     */
    function ImprimeDia() {
        try {
            $respuesta;
            $diasSemana = array();
            $meses = array();
            $diasSemana[1] = _("lunes");
            $diasSemana[] = _("martes");
            $diasSemana[] = _("miercoles");
            $diasSemana[] = _("jueves");
            $diasSemana[] = _("viernes");
            $diasSemana[] = _("sabado");
            $diasSemana[] = _("domingo");
            $meses[1] = _("enero");
            $meses[] = _("febrero");
            $meses[] = _("marzo");
            $meses[] = _("abril");
            $meses[] = _("mayo");
            $meses[] = _("junio");
            $meses[] = _("julio");
            $meses[] = _("agosto");
            $meses[] = _("septiembre");
            $meses[] = _("octubre");
            $meses[] = _("noviembre");
            $meses[] = _("diciembre");
            if (isset($_GET['id_empleado']) && $_GET['id_empleado'] != "0") {
                $intervaloMinutos = $this->intervaloEmpleado();
                $horaInicio = $this->traerRangoHorario($_GET['id_empleado'], $_GET['centromedico'], 1);
                $horaFinal = $this->traerRangoHorario($_GET['id_empleado'], $_GET['centromedico'], 2);
                $this->intervaloMinutos = $this->intervaloEmpleado();
            } else {
                $horaInicio = $this->horaInicio;
                $horaFinal = $this->horaFinal;
                $intervaloMinutos = $this->intervaloMinutos;
            }
            $horaInicio2 = $horaInicio;
            $horaFinal2 = $horaFinal;
            $horaActual = substr($horaInicio, 0, 2);
            $intervaloHoras = "01:00";
            $segundos = "00";
            $horaInicio = split(":", $horaInicio);
            $horaFinal = split(":", $horaFinal);
            $intervaloMinutos = split(":", $intervaloMinutos);
            $intervaloHoras = split(":", $intervaloHoras);
            $hora = (int) $horaInicio[0];
            $minutos = (int) $horaInicio[1] + (int) $intervaloMinutos[1];
            $k = 1;

            if (isset($_GET['dia'])) {
                $diaActual = $_GET['dia'];
            } else {
                $diaActual = date('d');
            }
            if (isset($_GET['mes'])) {
                $mesActual = $_GET['mes'];
            } else {
                $mesActual = date('m');
            }
            if (isset($_GET['anho'])) {
                $anoActual = $_GET['anho'];
            } else {
                $anoActual = date('Y');
            }

            if ((int) $mesActual < 10 && strlen($mesActual) == 2) {
                $mesActual = substr($mesActual, 1, 1);
            }

            $fechaInicio = $anoActual . '-' . $mesActual . '-' . $diaActual . ' ' . '06:00:00';
            $fechaFinal = $anoActual . '-' . $mesActual . '-' . $diaActual . ' ' . '23:00:00';
            $this->cargarHorario();
//            $this->actualizarSesion();
            $this->cargarCitas($fechaInicio, $fechaFinal);
            $hoy = $diaActual . " " . $meses[$mesActual] . " " . $anoActual;
            $respuesta = '<table id="vistaSemana" class="vistaSemana" border="0" cellspacing="0" cellpadding="0">';
            $respuesta .= '<tr class="semanaDiasCabeza">';
            $respuesta .= '<td class="horas" style="width:51px; height:22px; "></td>';
            $respuesta .= '<td class="diaActual" style="width:694px; height:22px;"></td> ';
            $respuesta .= '</tr>';
            $hInicio = strtotime($horaActual);
            $hFinal = strtotime($horaFinal2);
            while ($hInicio <= $hFinal) {
                if ($k == 1) {
                    $fecha[0] = $anoActual;
                    $fecha[1] = $mesActual;
                    $fecha[2] = $diaActual;
                    $fecha[3] = $horaActual;
                    $fecha[4] = "00";
                    $fecha[5] = "00";
                    $respuesta .= '<tr>';
                    $respuesta .= '<td class="horas">' . substr($horaInicio2, 1, 1) . ':00</td>' . $this->imprimeEventoDia($fecha, $diaActual);
                    $respuesta .= '</tr>';

                    $minutos = $minutos % 60;

                    if ($minutos == 0) {
                        $minutos = "00";
                        $hora += (int) $intervaloHoras[0];
                    }
                } else {

                    $minutos = $minutos % 60;
                    if ($minutos == 0) {
                        $minutos = "00";
                        $hora += (int) $intervaloHoras[0];
                    }

                    $fecha[0] = $anoActual;
                    $fecha[1] = $mesActual;
                    $fecha[2] = $diaActual;
                    if (strlen($horaActual) == 5) {
                        $fecha[3] = $hora;
                    } else {
                        $fecha[3] = $hora;
                    }

                    $fecha[4] = $minutos;
                    $fecha[5] = $segundos;
                    $horaActual = $hora . ":" . $minutos;
                    $respuesta .= '<tr>';
                    $respuesta .= '<td class="horas">' . $horaActual . '</td>' . $this->imprimeEventoDia($fecha, $diaActual);
                    $respuesta .= '</tr>';
                    $minutos += (int) $intervaloMinutos[1];
                    if ($minutos > 60) {
                        $hora += (int) $intervaloHoras[0];
                    }
                    $hInicio = strtotime($horaActual);
                }
                $k++;
            }
            $respuesta .= '</table>';
            echo $respuesta;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    /**
     * Imprime en el calendario la vista de día.
     */
    function ImprimeCandidatos($dia, $mes, $anho, $inicioHorario, $finalHorario, $tiempo) {
        try {
            $respuesta;
            $diasSemana = array();
            $meses = array();
            $diasSemana[1] = _("lunes");
            $diasSemana[] = _("martes");
            $diasSemana[] = _("miercoles");
            $diasSemana[] = _("jueves");
            $diasSemana[] = _("viernes");
            $diasSemana[] = _("sabado");
            $diasSemana[] = _("domingo");
            $meses[1] = _("enero");
            $meses[] = _("febrero");
            $meses[] = _("marzo");
            $meses[] = _("abril");
            $meses[] = _("mayo");
            $meses[] = _("junio");
            $meses[] = _("julio");
            $meses[] = _("agosto");
            $meses[] = _("septiembre");
            $meses[] = _("octubre");
            $meses[] = _("noviembre");
            $meses[] = _("diciembre");


            if (isset($_GET['id_empleado']) && $_GET['id_empleado'] != "0") {
                $intervaloMinutos = $this->intervaloEmpleado();
                $horaInicio = $this->traerRangoHorario($_GET['id_empleado'], $_GET['centromedico'], 1);
                $horaFinal = $this->traerRangoHorario($_GET['id_empleado'], $_GET['centromedico'], 2);
                $this->intervaloMinutos = $this->intervaloEmpleado();
            } else {
                $horaInicio = $this->horaInicio;
                $horaFinal = $this->horaFinal;
                $intervaloMinutos = $this->intervaloMinutos;
            }
            $horaInicio2 = $horaInicio;
            $horaFinal2 = $horaFinal;
            $horaActual = substr($horaInicio, 0, 2);


            $intervaloHoras = "01:00";
            $segundos = "00";
            $horaInicio = split(":", $horaInicio);
            $horaFinal = split(":", $horaFinal);
            $intervaloMinutos = split(":", $intervaloMinutos);
            $intervaloHoras = split(":", $intervaloHoras);
            $hora = $horaActual;
            $minutos = (int) substr($inicioHorario, 3, 2) + (int) $intervaloMinutos[1];
            $k = 1;

            $fechaInicio = $anho . '-' . $mes . '-' . $dia . ' ' . '06:00:00';
            $fechaFinal = $anho . '-' . $mes . '-' . $dia . ' ' . '23:00:00';
            $this->cargarHorario();
            $this->cargarCitas($fechaInicio, $fechaFinal);
            $hoy = $dia . " " . $meses[$mes] . " " . $anho;
            $respuesta = '<table id="vistaCandidatos" class="vistaSemana" border="0" cellspacing="0" cellpadding="0">';
            $respuesta .= '<tr class="semanaDiasCabeza">';
            $respuesta .= '<td class="horas" style="width:51px; height:22px; "></td>';
            $respuesta .= '<td class="diaActual" style="width:300px; height:22px;"></td> ';
            $respuesta .= '</tr>';
            $hInicio = strtotime($horaActual);
            $hFinal = strtotime($horaFinal2);
            while ($hInicio < $hFinal) {
                if ($k == 1) {
                    $fecha[0] = $anho;
                    $fecha[1] = $mes;
                    $fecha[2] = $dia;
                    $fecha[3] = $horaActual;
                    $fecha[4] = "00";
                    $fecha[5] = "00";
                    $respuesta .= '<tr>';
                    $respuesta .= '<td class="horas">' . substr($horaInicio2, 1, 1) . ':00</td>' . $this->imprimeEventoDiaCandidato($fecha, $dia, $tiempo);
                    $respuesta .= '</tr>';
                    $minutos = $minutos % 60;
                    if ($minutos == 0) {
                        $minutos = "00";
                        $hora += (int) $intervaloHoras[0];
                    }
                } else {
                    $minutos = $minutos % 60;
                    if ($minutos == 0) {
                        $minutos = "00";
                        $hora += (int) $intervaloHoras[0];
                    }
                    $fecha[0] = $anho;
                    $fecha[1] = $mes;
                    $fecha[2] = $dia;
                    if (strlen($horaActual) == 5) {
                        $fecha[3] = $hora;
                    } else {
                        $fecha[3] = $hora;
                    }

                    $fecha[4] = $minutos;
                    $fecha[5] = $segundos;
                    $horaActual = $hora . ":" . $minutos;
                    $respuesta .= '<tr>';
                    $respuesta .= '<td class="horas">' . $horaActual . '</td>' . $this->imprimeEventoDiaCandidato($fecha, $dia, $tiempo);
                    $respuesta .= '</tr>';
                    $minutos += (int) $intervaloMinutos[1];
                    $hInicio = strtotime($horaActual);
                }
                $k++;
            }
            $respuesta .= '</table>';
            echo $respuesta;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

    function ImprimeCandidatosRecarga($dia, $mes, $anho, $inicioHorario, $finalHorario, $tiempo) {
        try {
            $respuesta;
            $diasSemana = array();
            $meses = array();
            $diasSemana[1] = _("lunes");
            $diasSemana[] = _("martes");
            $diasSemana[] = _("miercoles");
            $diasSemana[] = _("jueves");
            $diasSemana[] = _("viernes");
            $diasSemana[] = _("sabado");
            $diasSemana[] = _("domingo");
            $meses[1] = _("enero");
            $meses[] = _("febrero");
            $meses[] = _("marzo");
            $meses[] = _("abril");
            $meses[] = _("mayo");
            $meses[] = _("junio");
            $meses[] = _("julio");
            $meses[] = _("agosto");
            $meses[] = _("septiembre");
            $meses[] = _("octubre");
            $meses[] = _("noviembre");
            $meses[] = _("diciembre");


            if (isset($_GET['id_empleado']) && $_GET['id_empleado'] != "0") {
                $intervaloMinutos = $this->intervaloEmpleado();
                $horaInicio = $this->traerRangoHorario($_GET['id_empleado'], $_GET['centromedico'], 1);
                $horaFinal = $this->traerRangoHorario($_GET['id_empleado'], $_GET['centromedico'], 2);
                $this->intervaloMinutos = $this->intervaloEmpleado();
            } else {
                $horaInicio = $this->horaInicio;
                $horaFinal = $this->horaFinal;
                $intervaloMinutos = $this->intervaloMinutos;
            }
            $horaInicio2 = $horaInicio;
            $horaFinal2 = $horaFinal;
            $horaActual = substr($horaInicio, 0, 2);


            $intervaloHoras = "01:00";
            $segundos = "00";
            $horaInicio = split(":", $horaInicio);
            $horaFinal = split(":", $horaFinal);
            $intervaloMinutos = split(":", $intervaloMinutos);
            $intervaloHoras = split(":", $intervaloHoras);
            $hora = $horaActual;
            $minutos = (int) substr($inicioHorario, 3, 2) + (int) $intervaloMinutos[1];
            $k = 1;

            $fechaInicio = $anho . '-' . $mes . '-' . $dia . ' ' . '06:00:00';
            $fechaFinal = $anho . '-' . $mes . '-' . $dia . ' ' . '23:00:00';
            $this->cargarHorario();
            $hoy = $dia . " " . $meses[$mes] . " " . $anho;
            $respuesta = '<table id="vistaCandidatos" class="vistaSemana" border="0" cellspacing="0" cellpadding="0">';
            $respuesta .= '<tr class="semanaDiasCabeza">';
            $respuesta .= '<td class="horas" style="width:51px; height:22px; "></td>';
            $respuesta .= '<td class="diaActual" style="width:300px; height:22px;"></td> ';
            $respuesta .= '</tr>';
            $hInicio = strtotime($horaActual);
            $hFinal = strtotime($horaFinal2);
            while ($hInicio < $hFinal) {
                if ($k == 1) {
                    $fecha[0] = $anho;
                    $fecha[1] = $mes;
                    $fecha[2] = $dia;
                    $fecha[3] = $horaActual;
                    $fecha[4] = "00";
                    $fecha[5] = "00";
                    $respuesta .= '<tr>';
                    $respuesta .= '<td class="horas">' . substr($horaInicio2, 1, 1) . ':00</td>' . $this->imprimeEventoDiaRecargo($fecha, $dia, $tiempo);
                    $respuesta .= '</tr>';
                    $minutos = $minutos % 60;
                    if ($minutos == 0) {
                        $minutos = "00";
                        $hora += (int) $intervaloHoras[0];
                    }
                } else {
                    $minutos = $minutos % 60;
                    if ($minutos == 0) {
                        $minutos = "00";
                        $hora += (int) $intervaloHoras[0];
                    }
                    $fecha[0] = $anho;
                    $fecha[1] = $mes;
                    $fecha[2] = $dia;
                    if (strlen($horaActual) == 5) {
                        $fecha[3] = $hora;
                    } else {
                        $fecha[3] = $hora;
                    }

                    $fecha[4] = $minutos;
                    $fecha[5] = $segundos;
                    $horaActual = $hora . ":" . $minutos;
                    $respuesta .= '<tr>';
                    $respuesta .= '<td class="horas">' . $horaActual . '</td>' . $this->imprimeEventoDiaRecargo($fecha, $dia, $tiempo);
                    $respuesta .= '</tr>';
                    $minutos += (int) $intervaloMinutos[1];
                    $hInicio = strtotime($horaActual);
                }
                $k++;
            }
            $respuesta .= '</table>';
            echo $respuesta;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
    }

}

?>     